100 CALL CLEAR :: REM    BATTLESTAR
120 PRINT "        BATTLESTAR": : : : :"VERTEIDIGEN SIE IHRE RAUM-": : :"STATION MIT DEN PFEILTASTEN.": : : : : : : : : : :
130 PRINT "BITTE EINE TASTE DRUECKEN."
140 CALL KEY(0,K,S) :: IF S=0 THEN 140 ELSE CALL CLEAR
150 RANDOMIZE
160 DIR=1 :: CALL CLEAR
170 CALL COLOR(9,7,1) :: CALL COLOR(10,6,1) :: CALL SCREEN(2)
180 CALL CHAR(96,"0000000000070707") :: CALL CHAR(97,"1818183C7EFFDB99")
190 CALL CHAR(98,"0000000000E0E0E0") :: CALL CHAR(99,"070E1CFFFF1C0E07")
200 CALL CHAR(104,"18423C99993C4218") :: CALL CHAR(101,"E07038FFFF3870E0") :: CALL CHAR(102,"070707")
210 CALL CHAR(107,"104628240A923044")
220 CALL CHAR(103,"99DBFF7E3C181818") :: CALL CHAR(100,"E0E0E0")
230 CALL CHAR(112,"30787C477C7830") :: CALL CHAR(113,"1010386CEEEE7C")
240 CALL CHAR(114,"0C1E3EE23E1E0C") :: CALL CHAR(115,"007CEEEE6C381010")
250 CALL CHAR(116,"101038FE381010") :: CALL CHAR(117,"0000183CFF7E2442")
260 CALL CHAR(105,"1818181818181818") :: CALL CHAR(106,"000000FFFF")
270 FOR COL=1 TO 12 :: CALL COLOR(COL,16,1) :: NEXT COL
280 L=100 :: S=5 :: SC=0 :: SA1,SB1,SA2,SB2,SA3,SB3,SA4,SB4=0 :: T=0
290 GOSUB 330
300 GOSUB 370 :: GOSUB 630
310 L=L-.5 :: IF L<1 THEN L=1
320 DISPLAY AT(24,3):SC :: GOTO 300
330 CALL SPRITE(#10,96,16,81,113,0,0,#11,97,16,81,121,0,0,#12,98,16,81,129,0,0)
340 CALL SPRITE(#13,99,16,89,113,0,0,#14,104,7,89,121,0,0,#15,101,16,89,129,0,0)
350 CALL SPRITE(#16,102,16,97,113,0,0,#17,103,16,97,121,0,0,#18,100,16,97,129,0,0)
360 RETURN
370 CALL KEY(0,K,S) :: IF S=0 THEN RETURN
380 IF K=69 THEN 430
390 IF K=83 THEN 480
400 IF K=88 THEN 530
410 IF K=68 THEN 580
420 RETURN
430 IF SA1=0 AND SB1=0 THEN CALL VCHAR(1,16,105,10) :: CALL SOUND(10,800,0) :: CALL VCHAR(1,16,32,10) :: SC=SC-10 :: RETURN
440 IF SB1=0 THEN CALL VCHAR(2,16,105,9) :: CALL SOUND(500,110,2,-5,2) :: CALL VCHAR(2,16,32,9) :: SC=SC+50 :: SA1=0 :: RETURN
450 CALL POSITION(#1,P1,P2) :: IF P1>76 THEN 820
460 P1=INT(P1/8)+1 :: CALL VCHAR(P1,16,105,10-P1) :: CALL SOUND(200,110,10,-5,8) :: CALL VCHAR(P1,16,32,10-P1)
470 CALL DELSPRITE(#1) :: SC=SC+20 :: SB1=0 :: RETURN
480 IF SA2=0 AND SB2=0 THEN CALL HCHAR(12,1,106,14) :: CALL SOUND(10,800,0) :: CALL HCHAR(12,1,32,14) :: SC=SC-10 :: RETURN
490 IF SB2=0 THEN CALL HCHAR(12,3,106,12) :: CALL SOUND(500,110,2,-5,2) :: CALL HCHAR(12,3,32,12) :: SC=SC+50 :: SA2=0 :: RETURN
500 CALL POSITION(#2,P1,P2) :: IF P2>86 THEN 820
510 P2=INT(P2/8)+1 :: CALL HCHAR(12,P2,106,15-P2) :: CALL SOUND(200,110,10,-5,8) :: CALL HCHAR(12,P2,32,15-P2)
520 CALL DELSPRITE(#2) :: SC=SC+20 :: SB2=0 :: RETURN
530 IF SA3=0 AND SB3=0 THEN CALL VCHAR(14,16,105,10) :: CALL SOUND(10,800,0) :: CALL VCHAR(14,16,32,10) :: SC=SC-10 :: RETURN
540 IF SB3=0 THEN CALL VCHAR(14,16,105,10) :: CALL SOUND(500,110,2,-5,2) :: CALL VCHAR(14,16,32,10) :: SC=SC+50 :: SA3=0 :: RETURN
550 CALL POSITION(#3,P1,P2) :: IF P1<110 AND P1>0 THEN 820
560 P1=INT(P1/8)+1 :: CALL VCHAR(14,16,105,P1-14) :: CALL SOUND(200,110,10,-5,8) :: CALL VCHAR(14,16,32,P1-14)
570 CALL DELSPRITE(#3) :: SC=SC+20 :: SB3=0 :: RETURN
580 IF SA4=0 AND SB4=0 THEN CALL HCHAR(12,18,106,14) :: CALL SOUND(10,800,0) :: CALL HCHAR(12,18,32,14) :: SC=SC-10 :: RETURN
590 IF SB4=0 THEN CALL HCHAR(12,18,106,13) :: CALL SOUND(500,110,2,-5,2) :: CALL HCHAR(12,18,32,13) :: SC=SC+50 :: SA4=0 :: RETURN
600 CALL POSITION(#4,P1,P2) :: IF P8<142 AND P8>0 THEN 820
610 P2=INT(P2/8) :: CALL HCHAR(12,18,106,P2-15) :: CALL SOUND(200,110,10,-5,8) :: CALL HCHAR(12,18,32,P2-15)
620 CALL DELSPRITE(#4) :: SC=SC+20 :: SB4=0 :: RETURN
630 IF SB1=0 THEN P1,P2=0 :: GOTO 640 ELSE CALL POSITION(#1,P1,P2)
640 IF SB2=0 THEN P3,P4=0 :: GOTO 650 ELSE CALL POSITION(#2,P3,P4)
650 IF SB3=0 THEN P5,P6=0 :: GOTO 660 ELSE CALL POSITION(#3,P5,P6)
660 IF SB4=0 THEN P7,P8=0 :: GOTO 670 ELSE CALL POSITION(#4,P7,P8)
670 IF P1>76 OR P4>86 OR(P5<110 AND P5>0)OR(P8<142 AND P8>0)THEN 820
680 NS=INT(RND*L) :: IF NS>10 THEN RETURN
690 NS=INT(RND*4)+1 :: ON NS GOTO 710,740,770,800
700 IF SA1=1 AND SB1=1 THEN RETURN
710 CALL HCHAR(2,16,115) :: SA1=1 :: IF L<80 AND SB1=0 THEN CALL SPRITE(#1,116,7,17,120,11-(L/10),0) :: SB1=1
720 RETURN
730 IF SA2=1 AND SB2=1 THEN RETURN
740 CALL HCHAR(12,3,112) :: SA2=1 :: IF L<80 AND SB2=0 THEN CALL SPRITE(#2,116,7,88,17,0,11-(L/10)) :: SB2=1
750 RETURN
760 IF SA3=1 AND SB3=1 THEN RETURN
770 CALL HCHAR(23,16,113) :: SA3=1 :: IF L<80 AND SB3=0 THEN CALL SPRITE(#3,116,7,175,120,-11+(L/10),0) :: SB3=1
780 RETURN
790 IF SA4=1 AND SB4=1 THEN RETURN
800 CALL HCHAR(12,30,114) :: SA4=1 :: IF L<80 AND SB4=0 THEN CALL SPRITE(#4,116,7,88,216,0,-11+(L/10)) :: SB4=1
810 RETURN
820 CALL DELSPRITE(#1,#2,#3,#4) :: CALL SOUND(2000,110,2,220,2,1000,30,-4,2)
830 FOR BUB=10 TO 18 :: CALL MOTION(#BUB,INT(RND*40)-20,INT(RND*40)-20) :: CALL PATTERN(#BUB,107) :: NEXT BUB
840 CALL SOUND(1000,110,2,220,2,110,2,-5,2) :: CALL SOUND(1,40000,30)
850 CALL DELSPRITE(ALL) :: CALL CLEAR
860 DISPLAY AT(12,7):SC;"PUNKTE"
870 CALL DELSPRITE(ALL)
880 DISPLAY AT(22,1):"NOCH EINMAL  J ODER N ?"
890 ACCEPT AT(22,25)VALIDATE("JN"):ANS$ :: IF ANS$="N" THEN END
900 CALL CLEAR :: GOSUB 330 :: SC=0 :: L=100
910 SB1,SB2,SB3,SB4,P1,P2,P3,P4,P5,P6,P7,P8=0
920 RETURN
